package com.javabean;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import java.util.List;
//与Component注解功能相同 都是通过注解的形式配置对象
//只不过通过不同名称的注解 进行功能的划分
//默认使用类名首字母小写作为id
@Service
public class Role {
    //@Value注解注入 可以直接进行常用类型数据的注入
    @Value("1")
    private int id;
    @Value("用户")
    private String name;
    @Value("普通用户")
    private String desc;

    //与Resource都是用于引用类型数据注入
    //Autowired是根据类型进行注入的 与 @Qualifier("id")一同书写实现
    //先根据类型进行注入 类型不匹配根据属性名进行注入
    @Autowired
    //如果是集合 会将当前spring容器中所有类型匹配的对象 以集合的形式存入
    private List<Permission> plist;

    public Role() {
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        System.out.println("setId执行");
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public List<Permission> getPlist() {
        return plist;
    }

    public void setPlist(List<Permission> plist) {
        this.plist = plist;
    }

    @Override
    public String toString() {
        return "Role{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                ", plist=" + plist +
                '}';
    }
    //生命周期注解 会在spring容器对象时 自动调用对应的初始化方法
    //在spring容器销毁时 自动调用所有的对象的销毁方法
    //初始化方法注解
    @PostConstruct
    public void  a( ){
        System.out.println("aaaa");
    }
    //销毁方法注解
    @PreDestroy
    public void  b( ){
        System.out.println("bbbb");
    }
}
